package ProductOwner;

import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import ScrumMaster.Tarea;

public class HistoriadeUsuario {
	private int autorequerimientohistoria;
	private int codigohistoria;
	private int codigorequerimiento;
	private String titulohistoria;
	private String descripcionhistoria;
	private String criterioaceptacioncuando;
	private String criterioaceptacionespero;
	private String testdeaceptacion;
	private Date fechacreacion;
	private String usuario;
	private Requerimiento requerimiento;
	public int getAutorequerimientohistoria() {
		return autorequerimientohistoria;
	}
	public void setAutorequerimientohistoria(int autorequerimientohistoria) {
		this.autorequerimientohistoria = autorequerimientohistoria;
	}
	public int getCodigohistoria() {
		return codigohistoria;
	}
	public void setCodigohistoria(int codigohistoria) {
		this.codigohistoria = codigohistoria;
	}
	public int getCodigorequerimiento() {
		return codigorequerimiento;
	}
	public void setCodigorequerimiento(int codigorequerimiento) {
		this.codigorequerimiento = codigorequerimiento;
	}
	public String getTitulohistoria() {
		return titulohistoria;
	}
	public void setTitulohistoria(String titulohistoria) {
		this.titulohistoria = titulohistoria;
	}
	public String getDescripcionhistoria() {
		return descripcionhistoria;
	}
	public void setDescripcionhistoria(String descripcionhistoria) {
		this.descripcionhistoria = descripcionhistoria;
	}
	public String getCriterioaceptacioncuando() {
		return criterioaceptacioncuando;
	}
	public void setCriterioaceptacioncuando(String criterioaceptacioncuando) {
		this.criterioaceptacioncuando = criterioaceptacioncuando;
	}
	public String getCriterioaceptacionespero() {
		return criterioaceptacionespero;
	}
	public void setCriterioaceptacionespero(String criterioaceptacionespero) {
		this.criterioaceptacionespero = criterioaceptacionespero;
	}
	public String getTestdeaceptacion() {
		return testdeaceptacion;
	}
	public void setTestdeaceptacion(String testdeaceptacion) {
		this.testdeaceptacion = testdeaceptacion;
	}
	public Date getFechacreacion() {
		return fechacreacion;
	}
	public void setFechacreacion(Date fechacreacion) {
		this.fechacreacion = fechacreacion;
	}
	public String getUsuario() {
		return usuario;
	}
	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}
	public Requerimiento getRequerimiento() {
		return requerimiento;
	}
	public void setRequerimiento(Requerimiento requerimiento) {
		this.requerimiento = requerimiento;
	}		
	public HistoriadeUsuario(int autorequerimientohistoria, int codigohistoria,
			int codigorequerimiento, String titulohistoria,
			String descripcionhistoria, String criterioaceptacioncuando,
			String criterioaceptacionespero, String testdeaceptacion,
			Date fechacreacion, String usuario, Requerimiento requerimiento) {
		super();
		this.autorequerimientohistoria = autorequerimientohistoria;
		this.codigohistoria = codigohistoria;
		this.codigorequerimiento = codigorequerimiento;
		this.titulohistoria = titulohistoria;
		this.descripcionhistoria = descripcionhistoria;
		this.criterioaceptacioncuando = criterioaceptacioncuando;
		this.criterioaceptacionespero = criterioaceptacionespero;
		this.testdeaceptacion = testdeaceptacion;
		this.fechacreacion = fechacreacion;
		this.usuario = usuario;
		this.requerimiento = requerimiento;
	}
	public HistoriadeUsuario() {
		super();
	}
	@Override
	public String toString() {
		return "HistoriadeUsuario [autorequerimientohistoria="
				+ autorequerimientohistoria + ", codigohistoria="
				+ codigohistoria + ", codigorequerimiento="
				+ codigorequerimiento + ", titulohistoria=" + titulohistoria
				+ ", descripcionhistoria=" + descripcionhistoria
				+ ", criterioaceptacioncuando=" + criterioaceptacioncuando
				+ ", criterioaceptacionespero=" + criterioaceptacionespero
				+ ", testdeaceptacion=" + testdeaceptacion + ", fechacreacion="
				+ fechacreacion + ", usuario=" + usuario + ", requerimiento=" + requerimiento + "]";
	}
	public String EliminarHistoriadeUsuario(int AutoReqHis, HashMap<Integer, HistoriadeUsuario> oListaHistoriadeUsuario, HashMap<Integer, Tarea> oListaTarea) {
		if (AutoReqHis != 0){
			Tarea oTarea = new Tarea();
			String ResultadoBusqueda="";
			Iterator it = oListaTarea.entrySet().iterator();
			while (it.hasNext()) {
				Map.Entry e = (Map.Entry)it.next();
				oTarea = (Tarea) e.getValue();
				if (oTarea.getCodigotarea() == AutoReqHis){
					ResultadoBusqueda = "Esta Historia de usuario se encuentra asignada a una tarea";
				}
			}
			if (ResultadoBusqueda != ""){
				return ResultadoBusqueda;
			}else{
				}		
			oListaHistoriadeUsuario.remove(AutoReqHis);
			return "Historia de Usuario Eliminado Satisfactoriamente";
		}else{
			return "No se encontro la historia de usuario";
		}
	}

	public String ModificarHistoriadeUsuario(int AutoReqHis, HashMap<Integer, HistoriadeUsuario> oListaHistoriadeUsuario,
			HistoriadeUsuario oHistoriadeUsuario, HashMap<Integer, Tarea> oListaTarea) {
		if (AutoReqHis != 0){
			Tarea oTarea = new Tarea();
			String ResultadoBusqueda="";
			Iterator it = oListaTarea.entrySet().iterator();
			while (it.hasNext()) {
				Map.Entry e = (Map.Entry)it.next();
				oTarea = (Tarea) e.getValue();
				if (oTarea.getCodigotarea() == AutoReqHis){
					ResultadoBusqueda = "Esta Historia de usuario se encuentra asignada a una tarea";
				}
			}
			if (ResultadoBusqueda != ""){
				return ResultadoBusqueda;
			}else{
				}		
			
			oListaHistoriadeUsuario.put(AutoReqHis, oHistoriadeUsuario );
			return "Historia de Usuario Modificado Satisfactoriamente";	
		}else{
			return "No se encontro la historia de usuario";
		}
	}
	
	
	
	public String BuscarHistoriadeUsuario(int AutoReqHis, HashMap<Integer, HistoriadeUsuario> oListaHistoriadeUsuario) {
		if (AutoReqHis != 0){
			oListaHistoriadeUsuario.get(AutoReqHis);
			return "Historia de Usuario Encontrado Satisfactoriamente";	
		}else{
			return "No se encontro la historia de usuario";
		}
	}
	public Object BuscarHistoriadeUsuario(int AutoReqHis, HashMap<Integer, HistoriadeUsuario> oListaHistoriadeUsuario,
			String mensaje) {
		if (AutoReqHis != 0){
			return oListaHistoriadeUsuario.get(AutoReqHis);
		}else{
			return null;
		}
	}
	public String InsertarHistoriadeUsuario(int AutoReqHis, HashMap<Integer, HistoriadeUsuario> oListaHistoriadeUsuario,
			HistoriadeUsuario oHistoriadeUsuario) {
		if (AutoReqHis != 0){
			oListaHistoriadeUsuario.put(AutoReqHis, oHistoriadeUsuario);
			return "Historia de Usuario Registrado Satisfactoriamente";	
		}else{
			return "No se registro la historia de usuario";
		}
	}

}
